package io;

import java.io.*;

/**
 * 对象流:java.io.ObjectInputStream和ObjectOutputStream
 * 对象流是一对高级流,作用是进行对象序列化与反序列化
 * 对象序列化:将一个java对象转换为一组字节的过程
 * 反序列化:将一组字节(对象序列化后的字节)还原为java对象的过程
 */
public class ObjectOutputStreamDemo  {
    public static void main(String[] args) throws IOException {
        //将一个Person的实例写入文件person.obj中保存
        String name="苍老师";
        int age=18;
        String gender="女";
        String[] otherInfo={"是个演员","来自日本","台词比较少","爱好写毛笔字","广大男同胞的启蒙老师"};

        Person p=new Person(name,age,gender,otherInfo);
        System.out.println(p);
        FileOutputStream fos=new FileOutputStream("person.obj");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        /*
        对象输出流在写出对象时,要求写出的对象所属的类必须实现可序列化接口,否则
        会抛出异常:java.io.NotSerializableException

        可序列化接口:java.io.Serializable
         */
        oos.writeObject(p);
        System.out.println("完毕");
        oos.close();
    }
}
